package main

import (
	"sort"
	"strings"
)

/*
	给定一个字符串s，最多只能进行一次变换，返回变换后能得到的最小字符串（按照字典序进行比较）。
	变换规则：交换字符串中任意两个不同位置的字符。
*/

func main() {
	println(getResult2("aabdeca"))
}
func getResult2(str string) string {
	minSArr := []byte(str)
	sort.SliceStable(minSArr, func(i, j int) bool {
		return minSArr[i] < minSArr[j]
	})
	originArr := []byte(str)
	for i := 0; i < len(str); i++ {
		if str[i] != minSArr[i] {
			swapindex := strings.LastIndexByte(str, minSArr[i])
			if swapindex != -1 {
				originArr[i], originArr[swapindex] = originArr[swapindex], originArr[i]
				break
			}
		}
	}
	return string(originArr)
}
